<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body></body>
  <script>
    /*
        对象的序列化
            - JS中的对象使用时都是存在于计算机的内存中的
            - 序列化指将对象转为一个可以存储的格式
                在JS中对象的序列化通常是将一个对象转换为字符串（JSON字符串）
            - 序列化的用途（对象转换为字符串有什么用）
              - 对象转换为字符串后，可以将字符串在不同的语言之间进行传递
                甚至人可以直接对字符串进行读写操作，使得js对象可以不同的语言之间传递。
            -- 用途
                1.作为数据交换的格式
                2.用来编写配置文件
              - 对象转换为字符串后，可以将字符串存储在本地文件中，或者在服务器上进行传输
              可以手动的编写JSON字符串，在很多程序的配置文件就是使用JSON编写的。

              编写JSON的注意事项
                1.JSON字符串有两种类型
                    JSON对象 {}
                    JSON数组 []
                2.JSON字符串的属性名必须使用双引号""
                3.JSON字符串的属性值可以是字符串(String)、数字(Number)、布尔值(Boolean)、null(Null)、数组(Array [])、对象(Object {})
                4.JSON的格式和JS的对象格式一致，但是JSON的属性名必须使用双引号""
                   JSON字符串如果属性是最后一个，则不能再加,

                5.JSON的属性值可以是字符串(String)、数字(Number)、布尔值(Boolean)、null(Null)、数组(Array [])、对象(Object {})
                6.JSON的属性值不能使用函数(Function)、undefined、正则表达式(RegExp)、Date对象、Symbol对象
        
    */
    class Person {
      constructor(name) {
        this.name = name;
      }
    }
    let p1 = new Person("lishuaihao");
    console.log(p1);
    let sb = Symbol('99')
    let obj = {
      name: "lishuaihao",
      age: 25,
      hobby: ["reading", "swimming"],
      person: { name: "zs", age: 18 },
      date: new Date(),
      s: NaN,
      reg: /\d+/,
      und: undefined,
      fn() {},
      p1,
      cc:sb
    };
    console.log(JSON.parse(JSON.stringify(obj)), "parse");
    // let json = JSON.stringify(obj);
    // console.log(obj, typeof json, "json");
    // console.log(JSON.parse(JSON.stringify(obj)).p1, "parse");
    // let j1 = '{"name":"zs","age":18,}'; // {}  里的key  必须使用双引号
    // console.log(JSON.parse(j1), "12");
  </script>
</html>
